Eclipse编译:打包静态库文件

您所在的位置:网站首页 -fpic 静态库 Eclipse编译:打包静态库文件

Eclipse编译:打包静态库文件

2024-05-31 17:58| 来源: 网络整理| 查看: 265

本文学习用Eclipse编译环境把源文件打包成静态库(*.a文件),以及在链接(Link)的过程中使用这个静态库文件。Hightec编译器版本是tricore v4.9.1.0。

文章目录 1 问题引入2 打包静态库过程2.1 导入工程2.2 打包静态库2.3 相关Makefile文件 3 链接静态库过程3.1 修改工程3.2 相关Makefile文件 4 总结

1 问题引入

在平时工作编译软件的时候,通常是把源文件和头文件加入到项目中,然后再点击rebuild编译软件,如下图所示。 在这里插入图片描述 但是,在团队成员之间可能需要经常传输文件,大量的源文件传输十分不方便,而且其他人还需要重新编译一次。另外,涉及到和外部公司交互的时候(例如做好一部分功能的软件交付给其他公司),还有一个保密性问题。

将源文件打包成静态库文件,就可以很好地解决重复编译,以及内容保密封装的问题。

2 打包静态库过程

本章节在博主另一篇文章《Eclipse编译:创建一个AURIX工程》的基础上,将其中一部分源文件打包成静态库文件。

2.1 导入工程

1)打开Eclipse – File --import,然后弹出一个导入界面; 在这里插入图片描述 2)在弹出的Import窗口中,选择General – Existing Projects into Workspace – Next; 在这里插入图片描述 3)选择工程路径 – Finish; 在这里插入图片描述 4)然后就导入了上次创建的工程,左边的Explorer中会显示出源文件和头文件; 在这里插入图片描述

2.2 打包静态库

1)进入到工程文件夹中,把其中两个源文件剪切出来,只保留hello.c/system_tc27x.c和uart_init_poll.c三个文件。后续打包静态库的过程只打包这三个文件。 在这里插入图片描述 2)回到Eclipse中,右键 – refresh(或者F5),然后src文件夹中就只剩三个文件了。 在这里插入图片描述 3)右键工程 – Properties(或者Alt + Enter),打开工程的属性窗口。 在这里插入图片描述 4)点击 C/C++ Build – Settings – Build Artifact,然后将Artifact Type配置为Static Library,将Artifact Name配置为Mylib(自己起个名字),最后OK; 在这里插入图片描述 5)然后Rebuild Project,Eclipse自动打包源文件为静态库。 在这里插入图片描述 等待一会儿以后,下方的console窗口就会提示静态库打包完成。 在这里插入图片描述6)左侧的Explorer中可以看到多了一个名为Archives的分类栏,其中包含一个libMylib.a文件; 在这里插入图片描述 在本地的工程路径下也可以获取这个静态库文件。 在这里插入图片描述

2.3 相关Makefile文件

打包静态库过程的背后也是执行了一部分Makefile文件,但是和编译链接有所不同。本节简单研究一下背后的Makefile文件。

1)点击左侧Explorer中的iRAM – makefile; 在这里插入图片描述 2)从makefile语句可以看出,打包静态库调用了tricore-ar这个工具; 在这里插入图片描述 在HIGHTEC的安装路径中可以找到它。 在这里插入图片描述 所以如果想要对静态库进行更加深入的了解,只需要在帮助手册中查找tricore-ar相关的说明即可。

3)回到makefile中,可以观察到输出libMylib.a文件所依赖的是目标文件,也就是说编译器先把源文件编译成目标文件(*.o),然后再把目标文件打包成静态库。 在这里插入图片描述 目标文件的定义和编译过程在另一个makefile中,subdir.mk文件。其中只有$(OBJS)是包含了内容。 在这里插入图片描述 从subdir.mk文件中可以看到,打包所用的目标文件可以和之前工程中保留的hello.c/system_tc27x.c和uart_init_poll.c三个源文件一一对应。

3 链接静态库过程

第2节中将hello.c/system_tc27x.c和uart_init_poll.c三个源文件打包成了一个libMylib.a静态库文件,本节就通过配置编译器,将这个静态库文件和其他目标文件链接到一起,生成elf文件。

3.1 修改工程

为了便于演示,本节就不再重新创建工程,而是在上一节的基础上修改工程配置。

1)在src文件夹中,把源文件换成之前没有打包的uart_poll.c和usr_sprintf.c两个文件。 在这里插入图片描述 后面会通过配置编译器,将这两个源文件编译为目标文件,再和之前的静态库链接起来。

2)创建一个lib文件夹,把静态库拷贝进去。 在这里插入图片描述 3)打开Eclipse工程,删除掉上一次的编译结果iRAM文件夹。 在这里插入图片描述 4)右键工程 – Properties,打开属性面板;点击 C/C++ Build – Settings – Build Artifact,然后将Artifact Type配置为Executable,将Artifact Name配置为Output,也就是输出的elf文件名称。 在这里插入图片描述 5)在Tool Settings中用命令行把静态库添加进去。另外,用-Wl, --start-group参数可以链接多个交叉静态库。 在这里插入图片描述 6)然后Rebuild Project,Eclipse会自动生成makefile并编译、链接。 在这里插入图片描述 本地的工程文件夹中就生成了这个elf文件。 在这里插入图片描述

3.2 相关Makefile文件

打开Makefile文件,可以看到之前自定义的一段参数写在了其中。 在这里插入图片描述

4 总结

本文学习了通过Eclipse环境打包静态库的方法,以及链接静态库的方法。其中还有许多相关的配置,需要按照工作中的需求来选择。

>>返回个人博客总目录



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3